﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MP_ATM
{
    public partial class MainUsers : Form
    {
        private SqlConnection con = null;
        public MainUsers()
        {
            InitializeComponent();
        }

        private void btnlichsu_Click(object sender, EventArgs e)
        {
            grouplichsu.BringToFront();
            grouplichsu.Show();
            groupchuyentien.Hide();
            groupdoimapin.Hide();
            groupxemsodu.Hide();
            getdata1();
            getdata2();
        }
        private void getdata1()
        {
            SqlCommand command = new SqlCommand();//  khai bao 1 command
            command.Connection = con;//ket noi
            command.CommandType = CommandType.Text;// khai bao kieu command
            DataTable dtgdrut = new DataTable("gdrut");
            command.CommandText = @"select matk[Mã Tài Khoản],sotienrut[Số Tiền Rút],sotienht[Số Tiền Hiện Tại],thoigian[Thời Gian],(sotienht - sotienrut)[Số tiền còn lại] from gdrut";
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = command;
            dtgdrut.Clear();
            da.Fill(dtgdrut);// nap du lieu cho table 
            grvrut.DataSource = dtgdrut;//load du lieu cho datagridviewDataSource = dtgdrut();

        }
        private void getdata2()
        {
            SqlCommand command = new SqlCommand();//  khai bao 1 command
            command.Connection = con;//ket noi
            command.CommandType = CommandType.Text;// khai bao kieu command
            DataTable dtgdchuyen = new DataTable("gdchuyen");
            command.CommandText = @"select matk[Mã Tài Khoản],tkchuyen[Tài Khoản Chuyển],sotienchuyen[Số Tiền Chuyển],
	                                sotienht[Số Tiền Hiện Tại],thoigian[Thời Gian], (sotienht - sotienchuyen)[Số tiền còn lại]
                                    from gdchuyen";
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = command;
            dtgdchuyen.Clear();
            da.Fill(dtgdchuyen); 
            grvchuyen.DataSource = dtgdchuyen;

        }
        private void btnruttien_Click(object sender, EventArgs e)
        {
            groupruttien.BringToFront();
            groupruttien.Show();
            groupchuyentien.Hide();
            groupdoimapin.Hide();
            grouplichsu.Hide();
            groupxemsodu.Hide();
        }

        private void btnchuyentien_Click(object sender, EventArgs e)
        {
            groupchuyentien.BringToFront();
            groupchuyentien.Show();
            groupdoimapin.Hide();
            grouplichsu.Hide();
            groupruttien.Hide();
            groupxemsodu.Hide();
        }

        private void btndoipin_Click(object sender, EventArgs e)
        {
            groupdoimapin.BringToFront();
            groupdoimapin.Show();
            groupchuyentien.Hide();
            grouplichsu.Hide();
            groupruttien.Hide();
            groupxemsodu.Hide();
        }

        private void btbnxemsodu_Click(object sender, EventArgs e)
        {
            groupxemsodu.BringToFront();
            groupxemsodu.Show();
            groupchuyentien.Hide();
            groupdoimapin.Hide();
            grouplichsu.Hide();
            groupruttien.Hide();

            SqlCommand command = new SqlCommand();
            command.Connection = this.con;
            DataTable dtUser = new DataTable(), dtUserChuyen = new DataTable();
            command.CommandText = "select * from users where matk = @matk";
            command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
            SqlDataAdapter da = new SqlDataAdapter(command);
            da.Fill(dtUser);

            txtsodu.Text = dtUser.Rows[0]["mney"].ToString();
        }
        private void btndangxuat_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn Có muốn đăng xuất không ?", "Đăng Xuất", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                this.Hide();
                DangNhap frm1 = new DangNhap();
                frm1.Show();
            }
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (textmpmoi1.Text.Equals(textmpmoi2.Text))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = this.con;

                if (textmpcu.Text.Equals(DangNhap.Password))
                {
                    command.CommandText = "update users set mapin = @mapin where matk = @matk";
                    command.Parameters.Add("@mapin", SqlDbType.NVarChar, 50).Value = textmpmoi1.Text;
                    command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
                    this.con.Open();
                    int result = 0;
                    try
                    {
                        result = command.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Thông báo");
                    }
                    finally
                    {
                        this.con.Close();
                    }
                    if (result > 0)
                    {
                        MessageBox.Show("Đổi mật khẩu thành công", "Thông báo");
                        textmpcu.Clear();
                        textmpmoi1.Text = "";
                        textmpmoi2.Text = "";
                    }
                    else
                    {
                        MessageBox.Show("Không đổi được mật khẩu", "Thông báo");
                    }
                }
                else
                {
                    MessageBox.Show("Mật khẩu không đúng", "Thông báo");
                }
            }
            else
            {
                MessageBox.Show("Hai mật khẩu không trùng nhau", "Thông báo");
            }
        }

        private void MainUsers_Load(object sender, EventArgs e)
        {
            string strCon = "Data Source=THANHTU-VAIO\\SQLEXPRESS;Initial Catalog=MP_ATM;Integrated Security=True";
            this.con = new SqlConnection(strCon);
            this.AcceptButton = btbnxemsodu;
            groupxemsodu.BringToFront();
            groupxemsodu.Show();
        }

        private void MainUsers_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }

        private void btnChuyenTienOK_Click(object sender, EventArgs e)
        {
            SqlCommand command = new SqlCommand();
            command.Connection = this.con;
            DataTable dtUser = new DataTable(), dtUserChuyen = new DataTable();
            command.CommandText = "select * from users where matk = @matk";
            command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
            SqlDataAdapter da = new SqlDataAdapter(command);
            da.Fill(dtUser);

            command = new SqlCommand();
            command.Connection = this.con;
            command.CommandText = "select * from users where matk = @matk";
            command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = textTaiKhoanChuyen.Text;
            da.Fill(dtUserChuyen);

            this.con.Open();
            

            if (sotienchuyen.Value <= decimal.Parse(dtUser.Rows[0]["mney"].ToString()))
            {
                decimal taikhoan = decimal.Parse(dtUser.Rows[0]["mney"].ToString()) - sotienchuyen.Value;
                decimal taikhoanChuyen = decimal.Parse(dtUserChuyen.Rows[0]["mney"].ToString()) + sotienchuyen.Value;
                try
                {
                    command = new SqlCommand();
                    command.Connection = this.con;
                    command.CommandText = "update users set mney = @mney where matk = @matk";
                    command.Parameters.Add("@mney", SqlDbType.Decimal).Value = taikhoan;
                    command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
                    command.ExecuteNonQuery();

                    command = new SqlCommand();
                    command.Connection = this.con;
                    command.CommandText = "update users set mney = @mney where matk = @matk";
                    command.Parameters.Add("@mney", SqlDbType.Decimal).Value = sotienchuyen.Value;
                    command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = textTaiKhoanChuyen.Text;
                    command.ExecuteNonQuery();

                    command = new SqlCommand();
                    command.Connection = this.con;
                    command.CommandText = "insert into gdchuyen(matk,tkchuyen,sotienchuyen,sotienht)"
                        + " values (@matk,@tkchuyen,@sotienchuyen,@sotienht)";
                    command.Parameters.Add("@sotienht", SqlDbType.Decimal).Value = decimal.Parse(dtUser.Rows[0]["mney"].ToString());
                    command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
                    command.Parameters.Add("@tkchuyen", SqlDbType.NVarChar, 50).Value = textTaiKhoanChuyen.Text;
                    command.Parameters.Add("@sotienchuyen", SqlDbType.Decimal).Value = sotienchuyen.Value;
                    command.ExecuteNonQuery();
                    MessageBox.Show("Số tiền đã được chuyển!!!!", "Thông báo");
                }
                catch (Exception)
                {
                    if (MessageBox.Show(" Tài khoản chuyển không tồn tại !!!", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        textTaiKhoanChuyen.Focus();
                        textTaiKhoanChuyen.Clear();
                    }
                }
                finally
                {
                    this.con.Close();
                }
            }
            else
            {
                MessageBox.Show("Số tiền chuyển phải nhỏ hơn số tiền trong tài khoản", "Thông báo");
            }
        }

        private void sotienchuyen_ValueChanged(object sender, EventArgs e)
        {

        }

        private void groupchuyentien_Enter(object sender, EventArgs e)
        {

        }

        private void btnrutok_Click(object sender, EventArgs e)
        {
            SqlCommand command = new SqlCommand();
            command.Connection = this.con;
            DataTable dtUser = new DataTable();
            command.CommandText = "select * from users where matk = @matk";
            command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
            SqlDataAdapter da = new SqlDataAdapter(command);
            da.Fill(dtUser);

            this.con.Open();

            if (sotienrut.Value <= decimal.Parse(dtUser.Rows[0]["mney"].ToString()))
            {
                decimal taikhoan = decimal.Parse(dtUser.Rows[0]["mney"].ToString()) - sotienrut.Value;
                try
                {
                    command = new SqlCommand();
                    command.Connection = this.con;
                    command.CommandText = "update users set mney = @mney where matk = @matk";
                    command.Parameters.Add("@mney", SqlDbType.Decimal).Value = taikhoan;
                    command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
                    command.ExecuteNonQuery();
                    //update vào bảng giao dịch rút tiền
                    command = new SqlCommand();
                    command.Connection = this.con;
                    command.CommandText = "insert into gdrut(matk,sotienrut,sotienht)"
                        + " values (@matk,@sotienrut,@sotienht)";
                    command.Parameters.Add("@sotienht", SqlDbType.Decimal).Value = decimal.Parse(dtUser.Rows[0]["mney"].ToString());
                    command.Parameters.Add("@matk", SqlDbType.NVarChar, 50).Value = DangNhap.Username;
                    command.Parameters.Add("@sotienrut", SqlDbType.Decimal).Value = sotienrut.Value;
                    command.ExecuteNonQuery();

                    MessageBox.Show("Số tiền đã được rút!!!!", "Thông báo");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Thông báo");
                }
                finally
                {
                    this.con.Close();
                }
            }
            else
            {
                MessageBox.Show("Số tiền rút phải nhỏ hơn số tiền trong tài khoản", "Thông báo");
            }
            
        }
    }
}
